﻿using System;
using Rezepto.DatenbankObjekte;
using Rezepto.DatenbankVerbindung;
using Rezepto.Tools;

namespace Rezepto.Account
{
    public partial class BenutzerVerwaltung : LoginPage
    {
        private Benutzer _benutzer;

        protected void Page_Init(object sender, EventArgs e)
        {
            if (IsLoggedIn() != null)
            {
                _benutzer = IsLoggedIn();
                BenutzerDatenArea.Visible = true;
                ForbiddenArea.Visible = false;
                UserName.Text = _benutzer.Benutzername;
                Vorname.Text = _benutzer.Vorname;
                Nachname.Text = _benutzer.Nachname;
                Email.Text = _benutzer.Email;
            }
            else
            {
                ForbiddenArea.Visible = true;
            }
        }

        protected void DatenSpeichern(object sender, EventArgs e)
        {
            var oldPassword = CryptoTools.Encrypt(OldPassword.Text);
            if (MsSqlVerbindung.LoginUser(_benutzer.Benutzername, oldPassword) != null)
            {
                var changedUser = new Benutzer();
                changedUser.Id = _benutzer.Id;
                changedUser.Benutzername = _benutzer.Benutzername;
                changedUser.Vorname = Vorname.Text;
                changedUser.Nachname = Nachname.Text;
                changedUser.Email = Email.Text;
                changedUser.Rolle = _benutzer.Rolle;
                if (!string.IsNullOrEmpty(Password.Text))
                {
                    changedUser.Password = CryptoTools.Encrypt(Password.Text);
                }
                else
                {
                    changedUser.Password = oldPassword;
                }
                MsSqlVerbindung.UpdateBenutzerDaten(changedUser);
                LoginUser(changedUser);
                FailureText.Text = "";
                Response.Redirect("~\\Account\\BenutzerVerwaltung.aspx");
            }
            else
            {
                FailureText.Text = "Das alte Passwort stimmt nicht. Daten können nicht geändert werden";
            }
            
        }
    }
}